package com.zyh.study.ForestPlus;


import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.OffsetDateTime;

/**
 * @Classname TransactionRecordDTO
 * @Description TODO()
 * @Date 2025-09-08 23:07
 * @Created by 86177
 */
@Data
public class TransactionRecordDTO {
    // 唯一标识（对应JSON中的"id"）
    @JsonProperty("id")
    private String id;

    // 数量（对应JSON中的"qty"，0表示无实物数量，如纯资金流水）
    @JsonProperty("qty")
    private Integer qty;

    // 状态（对应JSON中的"status"，如"executed"表示已执行）
    @JsonProperty("status")
    private String status;

    // 标的符号（对应JSON中的"symbol"，空字符串表示无具体标的，如ACH转账）
    @JsonProperty("symbol")
    private String symbol;

    // 交易类型（对应JSON中的"entry_type"，如"CSD"可能表示"现金存款"等业务类型）
    @JsonProperty("entry_type")
    private String entryType;

    // 净额（对应JSON中的"net_amount"，单位需结合业务定义，如人民币/美元）
    @JsonProperty("net_amount")
    private BigDecimal netAmount;

    // 描述信息（对应JSON中的"description"，包含转账类型、账单ID、资金方向等）
    @JsonProperty("description")
    private String description;

    // 结算日期（对应JSON中的"settle_date"，业务层面的资金结算日期）
    @JsonProperty("settle_date")
    private LocalDate settleDate;

    // 系统日期（对应JSON中的"system_date"，系统记录该笔数据的日期）
    @JsonProperty("system_date")
    private LocalDate systemDate;

    // 价格（对应JSON中的"price"，null表示无价格信息，如纯资金流水）
    @JsonProperty("price")
    private BigDecimal price;

    // 每股金额（对应JSON中的"per_share_amount"，null表示非股票类交易）
    @JsonProperty("per_share_amount")
    private BigDecimal perShareAmount;

    // 账户ID（对应JSON中的"account_id"，关联的用户/账户唯一标识）
    @JsonProperty("account_id")
    private String accountId;

    // 操作时间（对应JSON中的"at"，精确到毫秒的时间戳，带时区）
    @JsonProperty("at")
    private OffsetDateTime at;

    // 事件唯一标识（对应JSON中的"event_ulid"，ULID是比UUID更高效的唯一ID格式）
    @JsonProperty("event_ulid")
    private String eventUlid;
}
